;;///////////////////////////////////////////////////////////////////////////////////////////////////////
;;//BORRA MODELOS NO ELEGIDOS///////////////////////////////////////////////////////////////////////////////////
;;///////////////////////////////////////////////////////////////////////////////////////////////////////
;;BORRAR PORTATILES QUE NO TENGAN el MISMO SISTEMA OPERATIVO DADA
(defrule borrar-modelos-sistemaoperativo-no-incluida
	?modelo <- (fase borrar-modelos-sistemaoperativo-no-incluido)
	?sistemaoperativo <- (sistemaoperativo ?sistemaoperativoPC)
	=> 
	;;MOSTRAR CARACTERISTICAS
	(retract ?modelo)
	(retract ?sistemaoperativo)
	(bind ?result (run-query* obtener-portatiles))
	(while (?result next)
		(bind ?port (?result getObject port))
		(if(or(< ?port.so ?sistemaoperativoPC)(> ?port.so ?sistemaoperativoPC)) then
				(modify ?port (seleccionado FALSE))
		)
	)
)



(defrule busqueda-por-sistemaoperativo
   ?fase <- (fase busqueda-por-caracteristica 7)
=>
	( printout t "--------------Seleccione el sistema operativo que desea: ---------------------" crlf )
	
	( printout t "1. De Windows7_64bits " crlf )
	(assert (sistemaoperativo (read)) )
)	
	
	
	;;//SELECCION NO VALIDA////////////////////////////////////////////////////
		(defrule seleccion-sistemaoperativo-erronea
			?fase <- (fase busqueda-por-caracteristica 7)
			?eleccion <- (sistemaoperativo ?numero)
			(test (or (not(integerp ?numero))
				(< ?numero 1)
				(> ?numero 1) 
				))  	
			=>
			(retract ?fase ?eleccion )
			(assert (fase busqueda-por-caracteristica 7) )
			(printout t "La opcion elegida no es valida." crlf)
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
		)

		;;//SELECCION VALIDA////////////////////////////////////////////////////
		(defrule seleccion-sistemaoperativo-correcta
			?fase <- (fase busqueda-por-caracteristica 7)
			?eleccion <- (sistemaoperativo ?numero)
			(test (and (integerp ?numero)
				(> ?numero 0)
				(< ?numero 2) 
			))  
			=>
			(retract ?fase ?eleccion)
			(assert (fase mostrar-PCs-por-sistemaoperativo ?numero))
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
			(printout t "" crlf)
		)
		
		
		;;//PORTATILES de Intel_Core_i3-330M///////////////////////////////////////////////////
		(defrule mostrar-Portatiles-sistemaoperativo1
			?fase <- (fase mostrar-PCs-por-sistemaoperativo 1) 
		=>
			(retract ?fase)
			(assert (sistemaoperativo Windows7_64bits))
			(assert (fase borrar-modelos-sistemaoperativo-no-incluido))
			(assert (criterio (texto Con_Windows7_64bits)))
		)